// pages/my/my-team/index.js
const WXAPI = require('../../../miniprogram_npm/apifm-wxapi/index.js')
const CONFIG = require('../../../config.js')
Page({
  /**
   * 页面的初始数据
   */
  data: {
    isEditing: false,
    userInfo: {
      name: '',
      avatar: '',
      phone: '',
      birthday: '',
      region: [],
      gender: 0,
      bio: ''
    },
    originalUserInfo: {}, // 保存原始数据，用于取消编辑
    regionText: '',
    genderText: '未设置'
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.loadUserInfo()
  },

  /**
   * 加载用户信息
   */
  loadUserInfo() {
    // 从本地存储或API获取用户信息
    const userInfo = wx.getStorageSync('userInfo') || {}
    
    // 处理地区显示文本
    let regionText = ''
    if (userInfo.region && userInfo.region.length > 0) {
      regionText = userInfo.region.join(' ')
    }

    // 处理性别显示文本
    let genderText = '未设置'
    if (userInfo.gender == 1) {
      genderText = '男'
    } else if (userInfo.gender == 2) {
      genderText = '女'
    }

    this.setData({
      userInfo: userInfo,
      originalUserInfo: JSON.parse(JSON.stringify(userInfo)),
      regionText: regionText,
      genderText: genderText
    })
  },

  /**
   * 切换编辑模式
   */
  toggleEdit() {
    if (this.data.isEditing) {
      // 如果当前是编辑模式，点击保存
      this.saveUserInfo()
    } else {
      // 进入编辑模式
      this.setData({
        isEditing: true,
        originalUserInfo: JSON.parse(JSON.stringify(this.data.userInfo))
      })
    }
  },

  /**
   * 取消编辑
   */
  cancelEdit() {
    wx.showModal({
      title: '提示',
      content: '确定要取消编辑吗？未保存的修改将丢失',
      success: (res) => {
        if (res.confirm) {
          this.setData({
            isEditing: false,
            userInfo: this.data.originalUserInfo
          })
          this.updateDisplayTexts()
        }
      }
    })
  },

  /**
   * 更新显示文本
   */
  updateDisplayTexts() {
    const { userInfo } = this.data
    
    let regionText = ''
    if (userInfo.region && userInfo.region.length > 0) {
      regionText = userInfo.region.join(' ')
    }

    let genderText = '未设置'
    if (userInfo.gender == 1) {
      genderText = '男'
    } else if (userInfo.gender == 2) {
      genderText = '女'
    }

    this.setData({
      regionText: regionText,
      genderText: genderText
    })
  },

  /**
   * 选择头像
   */
  chooseAvatar() {
    if (!this.data.isEditing) return

    wx.chooseMedia({
      count: 1,
      mediaType: ['image'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        const tempFilePath = res.tempFiles[0].tempFilePath
        
        // 这里可以上传到服务器，获取正式的图片URL
        // 暂时使用本地临时路径
        this.setData({
          'userInfo.avatar': tempFilePath
        })
        
        wx.showToast({
          title: '头像已更新',
          icon: 'success'
        })
      },
      fail: (err) => {
        console.error('选择头像失败:', err)
      }
    })
  },

  /**
   * 姓名输入
   */
  onNameInput(e) {
    this.setData({
      'userInfo.name': e.detail.value
    })
  },

  /**
   * 手机号输入
   */
  onPhoneInput(e) {
    const phone = e.detail.value
    // 简单的手机号格式验证
    if (phone && !/^1[3-9]\d{9}$/.test(phone) && phone.length === 11) {
      wx.showToast({
        title: '手机号格式不正确',
        icon: 'none'
      })
    }
    this.setData({
      'userInfo.phone': phone
    })
  },

  /**
   * 生日选择
   */
  onBirthdayChange(e) {
    this.setData({
      'userInfo.birthday': e.detail.value
    })
  },

  /**
   * 地区选择
   */
  onRegionChange(e) {
    const region = e.detail.value
    const regionText = region.join(' ')
    
    this.setData({
      'userInfo.region': region,
      regionText: regionText
    })
  },

  /**
   * 性别选择
   */
  onGenderChange(e) {
    const gender = parseInt(e.detail.value)
    let genderText = '未设置'
    if (gender === 1) {
      genderText = '男'
    } else if (gender === 2) {
      genderText = '女'
    }

    this.setData({
      'userInfo.gender': gender,
      genderText: genderText
    })
  },

  /**
   * 个人简介输入
   */
  onBioInput(e) {
    this.setData({
      'userInfo.bio': e.detail.value
    })
  },

  /**
   * 保存用户信息
   */
  saveUserInfo() {
    const { userInfo } = this.data

    // 表单验证
    if (!userInfo.name || userInfo.name.trim() === '') {
      wx.showToast({
        title: '请输入姓名',
        icon: 'none'
      })
      return
    }

    if (userInfo.phone && !/^1[3-9]\d{9}$/.test(userInfo.phone)) {
      wx.showToast({
        title: '手机号格式不正确',
        icon: 'none'
      })
      return
    }

    wx.showLoading({
      title: '保存中...'
    })

    // 这里应该调用API保存到服务器
    // 暂时保存到本地存储
    try {
      wx.setStorageSync('userInfo', userInfo)
      
      setTimeout(() => {
        wx.hideLoading()
        wx.showToast({
          title: '保存成功',
          icon: 'success'
        })
        
        this.setData({
          isEditing: false,
          originalUserInfo: JSON.parse(JSON.stringify(userInfo))
        })
        
        this.updateDisplayTexts()
      }, 1000)
      
    } catch (error) {
      wx.hideLoading()
      wx.showToast({
        title: '保存失败',
        icon: 'none'
      })
      console.error('保存用户信息失败:', error)
    }
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.loadUserInfo()
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.loadUserInfo()
    wx.stopPullDownRefresh()
  }
})